1、pthread_create
	创建线程
	thread: 返回线程句柄
	attr: 线程属性，为NULL则使用默认属性
	start_routine: 线程入口函数
	arg: 线程入口参数
	成功返回0，失败返回错误码
	int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                          void *(*start_routine) (void *), void *arg);
2、pthread_detach
	脱离线程，将线程的分离属性设置为分离状态，分离状态的线程在结束后系统自动回收资源，非分离状态的线程在结束
	后需要通过pthread_join回收资源
	thread: 线程句柄
	成功返回0，失败返回错误码
	int pthread_detach(pthread_t thread);
3、pthread_join
	等待非分离状态的线程结束并回收其资源
	thread: 线程句柄
	value_ptr: 存储线程返回值，如果线程被取消返回值为(void*)-1
	成功返回0，失败返回错误码
	int pthread_join(pthread_t thread, void **value_ptr);
4、pthread_exit
	退出当前线程
	value_ptr: 线程返回参数
	void pthread_exit(void *value_ptr);
5、pthread_attr_init
	将线程属性attr初始化为默认值
	attr: 线程属性
	成功返回0，失败返回错误码
	int pthread_attr_init(pthread_attr_t *attr);
6、pthread_attr_destroy
	反初始化线程属性attr
	attr: 线程属性
	成功返回0，失败返回错误码
	int pthread_attr_destroy(pthread_attr_t *attr);
7、pthread_attr_setdetachstate
	设置线程属性中分离状态
	attr: 线程属性
	state: 分离状态	
		PTHREAD_CREATE_JOINABLE 非分离（默认）
		PTHREAD_CREATE_DETACHED 分离
	成功返回0，失败返回错误码
	int pthread_attr_setdetachstate(pthread_attr_t *attr, int state);
8、pthread_attr_getdetachstate
	获取线程属性中的分离状态
	attr: 线程属性
	state: 分离状态
		PTHREAD_CREATE_JOINABLE 非分离（默认）
		PTHREAD_CREATE_DETACHED 分离
	成功返回0，失败返回错误码
	int pthread_attr_getdetachstate(pthread_attr_t const *attr, int *state);
9、pthread_attr_setstacksize
	设置线程属性中的堆栈大小
	attr: 线程属性
	stack_size: 堆栈大小
	成功返回0，失败返回错误码
	int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stack_size);
10、pthread_attr_getstacksize
	获取线程属性中的堆栈大小
	attr: 线程属性
	stack_size: 堆栈大小
	成功返回0，失败返回错误码
	int pthread_attr_getstacksize(pthread_attr_t const *attr, size_t *stack_size);
11、pthread_cancel
	向线程发送取消请求
	thread: 线程句柄
	成功返回0，失败返回错误码
	int pthread_cancel(pthread_t thread);
12、pthread_setcancelstate
	设置当前线程的取消状态
	state: 取消状态
		PTHREAD_CANCEL_ENABLE 使能线程取消（默认）
		PTHREAD_CANCEL_DISABLE 禁止线程取消
	oldstate: 返回之前的取消状态
	成功返回0，失败返回错误码
	int pthread_setcancelstate(int state, int *oldstate);
13、pthread_setcanceltype
	设置当前线程的取消类型
	type: 线程取消类型
		PTHREAD_CANCEL_DEFERRED 线程收到取消请求后继续运行至下一个取消点再结束（默认）
		PTHREAD_CANCEL_ASYNCHRONOUS 线程立即结束
	oldtype: 返回之前的取消类型
	成功返回0，失败返回错误码
	int pthread_setcanceltype(int type, int *oldtype);
14、pthread_testcancel
	设置线程取消点，根据posix标准，可以引起休眠的系统调用都是取消点
	void pthread_testcancel(void);
15、pthread_cleanup_push
	设置当前的线程的清理函数
	routine: 线程清理函数
	arg: 线程清理函数参数
	void pthread_cleanup_push(void (*routine)(void*), void *arg);
16、pthread_cleanup_pop
	执行线程清理函数，pthread_cleanup_pop与pthread_cleanup_push必须成对使用，且pthread_cleanup_push在前面
	execute: 是否使能线程清理
		0 其它的线程对该线程调用pthread_cancel()执行清理函数，如果调用pthread_cancel()前已
		经执行过该函数则不会执行线程清理函数
		非0 立即执行清理函数
	void pthread_cleanup_pop(int execute);
17、注意
	多线程编程时主线程退出则整个进程退出，某个线程调用void exit(int status)、void _exit(int status)则进程退出